﻿using System;
using DLLPrime;

namespace h3
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Prime Prime = new Prime(2000);
                Console.WriteLine("请选择功能:");
                Console.WriteLine("1. 质因数分解");
                Console.WriteLine("2. 判断一个数是否是质数");
                Console.WriteLine("3. 生成一定范围内的质数列表");
                Console.WriteLine("4. 退出");

                string choice = Console.ReadLine();
                bool exit=false;
                switch (choice)
                {
                    case "1":
                        PrimeFactorization(Prime);
                        break;
                    case "2":
                        CheckIfPrime(Prime);
                        break;
                    case "3":
                        GeneratePrimeList(Prime);
                        break;
                    case "4":
                        exit = true;
                        break;

                    default:
                        Console.WriteLine("无效选择，请重试。");
                        break;
                }
                if (exit) { break; }
                Console.WriteLine("");
                //Console.WriteLine("按任意键退出...");
                //Console.ReadKey();
            }
        }

        static void PrimeFactorization(Prime Prime)
        {
            Console.WriteLine("请输入一个介于1到1000之间的整数：");
            try
            {
                int input = Convert.ToInt32(Console.ReadLine());
                string result = Prime.PrimeFactors(input);
                Console.WriteLine($"数字 {input} 的质因数分解结果是：{result}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"发生错误: {ex.Message}");
            }
        }

        static void CheckIfPrime(Prime Prime)
        {
            Console.WriteLine("请输入一个数字，程序将判断其是否是质数：");
            int input = Convert.ToInt32(Console.ReadLine());
            bool isPrime = Prime.isPrime(input);
            Console.WriteLine(isPrime ? $"{input} 是质数。" : $"{input} 不是质数。");
        }

        static void GeneratePrimeList(Prime Prime)
        {
            Console.WriteLine("请输入一个范围，程序将生成该范围内的所有质数：");
            int maxRange = Convert.ToInt32(Console.ReadLine());
            List<int> primes = Prime.GeneratePrimes(maxRange);
            Console.WriteLine($"范围 1 到 {maxRange} 的质数有：");
            Console.WriteLine(string.Join(", ", primes));
        }
    }
}